package cn.com.dbappsecurity.frame.exception;

import lombok.Getter;

public class FrameException extends Exception {

	private static final long serialVersionUID = 1L;
	
	/**
	 * 异常类型，系统相关...
	 */
	public static final int TYPE_NUM_EXCEED_MAX = 1;//查询记录数超过上限
	public static final int TYPE_NOT_PERSSION = 2;//无权限有访问
	/**
	 * 异常类型，参数相关1..
	 */
	public static final int TYPE_ARGU_ERROR = 100;//参数错误
	/**
	 * 异常类型，文件上传相关002..
	 */
	public static final int TYPE_UPLOAD_SIZE_LIMIT = 201;//上传的文件[{0}]大小超过限制
	public static final int TYPE_UPLOAD_TYPE_UNALLOW = 202;//上传了不允许的文件类型[{0}]
	/**
	 * 异常类型，页面请求相关003..
	 */
	public static final int TYPE_REQ_ADDR_NOT_FOUND = 300;//访问的地址不存在
	/**
	 * 异常类型，用户相关004..
	 */
	public static final int TYPE_CHECK_ERROR = 400;//用户名或密码错误
	public static final int TYPE_USER_EXIST = 401;//创建的用户已经存在
	
	private Throwable cause;
	@Getter
	private int type;
	@Getter
	private Object[] values;
	
	/**
	 * 构造函数
	 * @param type		错误类型
	 * @param cause		错误类型
	 * @param values	错误信息中{0}{1}{n}的值
	 */
	public FrameException(int type,Object...values){
		this.type = type;
		this.values = values;
	}
	
	/**
	 * 构造函数
	 * @param type		错误类型
	 * @param cause		错误类型
	 * @param values	错误信息中{0}{1}{n}的值
	 */
	public FrameException(int type,Throwable cause,Object...values){
		this.type = type;
		this.values = values;
	}

	@Override
	public String getMessage() {
		return cause == null ? super.getMessage() : cause.getMessage();
	}
	
}
